// Package config pkg/config/config.go
package config

import (
	"github.com/spf13/viper"
)

// InitConfig 初始化配置
func InitConfig(configPath string) error {
	viper.SetConfigFile(configPath)

	// 设置默认值
	setDefaultConfig()

	// 读取配置文件
	if err := viper.ReadInConfig(); err != nil {
		return err
	}

	return nil
}

// 设置默认配置值
func setDefaultConfig() {
	// 服务器配置默认值
	viper.SetDefault("server.port", "8080")
	viper.SetDefault("server.mode", "debug")

	// 数据库配置默认值
	viper.SetDefault("database.max_idle_conns", 10)
	viper.SetDefault("database.max_open_conns", 100)

	// 监控配置默认值
	viper.SetDefault("monitor.enabled", true)
	viper.SetDefault("monitor.mode", "periodic") // periodic 或 sampling
	viper.SetDefault("monitor.sampling_rate", 100)
	viper.SetDefault("monitor.random_sampling", 1)
	viper.SetDefault("monitor.periodic_interval", 30)
	viper.SetDefault("monitor.log_level", "info")
}
